/*
 * Franja donde se ingresan los jugadores graficos.
 */
package gui;

import java.awt.*;
import javax.swing.*;
import logic.Jugador;

/**
 *
 * @author Rafael Rivero
 */
public class JPanelPosicion extends JPanel {
   private PanelJugador_[] jugadores; // Arreglo de Jugadores Graficos
   private int numJugadores; //Numero de jugadores en la franja
   private FlowLayout lay;  
   private JPanel panelLayout;   //Panel movible para acomodar jugadores, tambien es trasparente
   private VentanaEquipos oyente;
    
    
    /** Constructor 
     * Solo es llamado al principio del juego
     * Inicializa las franjas sin nada.
     */
    public JPanelPosicion(VentanaEquipos oyente){
        super();
        setLayout(null);
        setBackground(new Color(0,0,0,0)); // Trasparente el panel
      // Iniciializa arreglos y variables  
        this.oyente=oyente;
        jugadores=new PanelJugador_[6];
        panelLayout=new JPanel();   
        numJugadores=0;        
    }

    public int getNumJugadores() {
        return numJugadores;
    }
    
    
    public void ocultarBotones(){
        for(int i=0;i<this.numJugadores;i++){
            jugadores[i].ocultarBoton();
        }
    }
    
    /**
     * Retorna el arreglo de jugadores graficos en la posicion indicada
     */
    public PanelJugador_ getArrayJugadores_pos(int i){
        return jugadores[i];
    }

    /**
     * Retorna el arreglo de jugadores graficos completo
     */
    public PanelJugador_[] getArrayJugadores() {
        return jugadores;
    }
    
   /**  Resibe un Jugador lo agrega en el arreglo de jugadores y luego llama a una funcion que lo agrega a la franja
    *  retorna 1 si No pudo agregar al jugador.
    */
    public int agregarJugador(Jugador nuevo){
        
       
        if(numJugadores<5){
            jugadores[numJugadores]=new PanelJugador_(nuevo,oyente);       
            jugadores[numJugadores].setSize(40, 40);
            jugadores[numJugadores].setBackground(new Color(0,0,0,0)); 
            numJugadores++;
            reiniciarFranja();
            return 0;
        }
        else{ return 1;}
    }
    
    
    /** Reinicia la franja 
     * No retorna nada
     */
     public void reiniciarFranja(){
        int posLay=105;
        int i;
        int pos=0;
        
        posLay=posLay-(numJugadores*30);
        setLayout(null);
       //Quita el panel anterior
        remove(panelLayout);
       //Crea un nuevo panel con las nuevas dimensiones
        panelLayout=new JPanel();
        panelLayout.setBounds(0, posLay, 50, 330);
        panelLayout.setBackground(new Color(0,0,0,0));
     
       // Le agrega el Layout al panel nuevo 
       
        panelLayout.setLayout(null);
               
       //Agrega los jugadores a la nueva Franja
       for(i=0;i<numJugadores;i++){ 
           pos=pos+55;
           jugadores[i].setBounds(0, pos, 40, 40);
           panelLayout.add(jugadores[i]); 
        }
       // Agrega la franja 
        add(panelLayout);
    }
     
     /** Quita el Jugador que recibe de la franja en la que se encuentra
      * Si el Jugador no esta retorna 1.
      * Si lo borro retorna 0;
      */
     public int eliminarJugador(Jugador aEliminar){
         int pos=-1,i=0;
         
         if( (pos=buscarJugador(aEliminar)) == -1){
             return 1;  //No lo encontro
         }
         
         if(pos==numJugadores-1){ //Si es el ultimo no lo toma mas en cuenta y ya
             numJugadores=numJugadores-1;
             reiniciarFranja(); //REinicia la franja
             return 0;
         }
         //lo sobre escribe y resta 1 a numero de jugadores
         
         for(i=pos;i<numJugadores-1;i++){
             jugadores[i]=jugadores[i+1];
         }
         
         numJugadores-=1; // no toma en cuenta al ultimo, despues lo sobre escribe
         reiniciarFranja(); //REinicia la franja
         return 0; //retorna 0 si todo esta bien
     }
    
    /** Busca si el jugador esta en la franja 
     * Retorna poscion
     */
    public int buscarJugador(Jugador aBuscar){
        int i;
        
        for(i=0;i<numJugadores;i++){ //Lo busca y retorna la posicion si lo encuenta
            if(jugadores[i].getJugadorLogico()==aBuscar){
                return i;
            }
        }
        return -1; //Retorna -1 si no lo encontro
    }
    
}
